package com.harry.web.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;

import com.harry.hr.utils.PageResult;

public class PageTag extends TagSupport {
	public  PageTag(){
		
		System.out.print("____________进入分页标签________________");
	}
	
	
	private static final long serialVersionUID = 6441415024102830075L;

	private String file="";			
	private int num=0;
	
	
	   public String getFile() {
	     return file;
	   }

	   public void setFile(String file) {
	     this.file=file;
	   }

	   public int getNum() {
	     return num;
	   }

	   public void setNum(int num) {
	     this.num=num;
	   }
	
	
	
	   
	   
	
	@Override
	public int doStartTag() throws JspException {
		int intPage=1;			//当前页面,默认为1
		int pageCount=1;		//页数总和
		int recordTotal=0;		//记录总和
		int pageSize=3;			//每页显示多少记录
		
		
		
		PageResult pageResult=(PageResult)pageContext.getAttribute("pageResult",PageContext.SESSION_SCOPE);
		
		
		
		if(pageResult!=null){
			intPage=pageResult.getPageNo();
			pageCount=pageResult.getPageTotal();
			recordTotal=pageResult.getRecordTotal();
			pageSize=pageResult.getPageSize();
		}
		
		
		
		
		
		
//		//如果session或者request中intPage为null
//		if(pageContext.getAttribute("page")!=null){
//			//存入session或者request
//			intPage=Integer.parseInt((String)pageContext.getAttribute("page"));
//			
//			//清除值
//			pageContext.removeAttribute("page");
//		}
//		
//		//如果session或者request中pageCount为null
//		if(pageContext.getAttribute("pageCount")!=null) {
//			//存入session或者request
//			pageCount=Integer.parseInt((String)pageContext.getAttribute("pageCount"));
//			
//			//清除值
//			pageContext.removeAttribute("pageCount");
//		}
//		
//		//如果session或者request中recordTotal为null
//		if(pageContext.getAttribute("recordTotal")!=null){
//			//存入session或者request
//			recordTotal=Integer.parseInt((String)pageContext.getAttribute("recordTotal"));
//
//			//清除值
//			pageContext.removeAttribute("recordTotal");
//		}
//		
//		//如果session或者request中pageSize为null
//		if(pageContext.getAttribute("pageSize")!=null){
//			//存入session或者request
//			recordTotal=Integer.parseInt((String)pageContext.getAttribute("pageSize"));
//
//			//清除值
//			pageContext.removeAttribute("pageSize");
//		}
		
		//总效果:[84]条记录 [6]页 当前是[46-60]条 [前一页] 1 2 3 4 5 6 [后一页] 下拉框第1页
		try {		
			int startRecord=( intPage-1)*pageSize;
			int endRecord=( intPage)*pageSize;
			
			//如果起始记录为0,则设置起始记录为1
			if(startRecord==0){
				startRecord=1;
			}
			
			//如果结尾记录大于
			if(endRecord>recordTotal){
				endRecord=recordTotal;
			}
			
			
			
			//[84]条记录 [6]页 当前是[46-60]条
			   pageContext.getOut().print("<tr><td><span id=pagelink><div style='background-color: white;LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right'>");
			   pageContext.getOut().print("共[<b>"+recordTotal+"</b>]条记录&nbsp;&nbsp;" +
			   		"["+pageCount+"]页&nbsp;&nbsp;" +
			   		"当前是["+startRecord+"-"+endRecord+"]条&nbsp;&nbsp;");
			 
			   //如果当前页>1
				if (intPage> 1) {
				//[前一页]  超连接
					pageContext.getOut().print("&nbsp;&nbsp;[<a href='"+file+"&page="+
							new Integer(intPage-1).toString()+"'>前一页</a>] ");					
			    }
				
				//循环显示页码1 2 3 4 5 6 
				for(int i=1;i<=pageCount;i++){
					//当页码为当前页时则该页码显示粗体
					 if(i==intPage&&i!=1){
						 pageContext.getOut().print("<a class=''  href='"+file+"&page="+i+"'><b>"+i+"<b></a>"); 				  
					   }
					//否则显示普通体
					pageContext.getOut().print("<a class='' href='"+file+"&page="+i+"'>"+i+"</a>"); 
				}
				
				//如果当前页<页数总计
			   if (intPage < pageCount) {
				   //[后一页] 超连接
				   pageContext.getOut().print("&nbsp;[<a href='"+file+"&page="+
							new Integer(intPage+1).toString()+"'>后一页</a>] ");	
			    }
			   
			   //select开始标签
			   pageContext.getOut().print("&nbsp;&nbsp;	<select onchange=\"if (this.value != '') {location.href=this.value;}\" >");
			   
			  
			   //循环填充下拉框数字页元素
			   for(int i=1;i<=pageCount;i++){
				   if(i==intPage){
					   pageContext.getOut().print("<option value='"+file+"&page="+i+"'>第"+i+"页</option>");
				   }
				   pageContext.getOut().print("<option value='"+file+"&page="+i+"'>第"+i+"页</option>");

				}
			   
			   //select结束标签
			   pageContext.getOut().print("</select>");
			   		
				//标签结束			           
			   pageContext.getOut().print("</div></span></td></tr>");
		} catch (Exception ioException) {
			System.err.println("Exception thrown ");
			throw new JspException(ioException);		   
		}
		
		
		return super.doStartTag();
	}
	
	

}
